#include<stdio.h>
#include<string.h>
#include <stdlib.h>

void testa( char nomeArq[30], char senha[30] )
{
    char comando[40];
    int retorno;
    sprintf(comando, "./descriptografa %s %s", nomeArq, senha);
    retorno = system(comando);
        
    if ( retorno == 0 )
    {
        printf("\nA senha candidata é: %s\n", senha);
    }

}

int main(void)
{
    char nomeArq[30];
    int i, j, k, l;
    char buffer[9];
    char alfabeto[26] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l','m', 'n', 'o', 'p','q', 'r', 's', 't','u', 'v', 'w', 'x', 'y','z'};
    
    printf("\nDigite o nome do arquivo criptografado: ");
    gets(nomeArq);
    //1 caractere
    for (i=0;i < 26; i++)
    {
        buffer[0] = alfabeto[i];    
        buffer[1] = '\0';
        testa(nomeArq, buffer);
    }

    //2 caracteres
    for (i=0;i < 26; i++)
    {
        for (j=0;j < 26; j++)
        {
            buffer[0] = alfabeto[i];
            buffer[1] = alfabeto[j];    
            buffer[2] = '\0';
            testa(nomeArq, buffer);
        }
    }

    //3 caracteres
    for (i=0;i < 26; i++)
    {
        for (j=0;j < 26; j++)
        {
            for (k=0;k < 26; k++)
            {
                buffer[0] = alfabeto[i];
                buffer[1] = alfabeto[j];    
                buffer[2] = alfabeto[k];    
                buffer[3] = '\0';
                testa(nomeArq, buffer);
            }
        }
    }

    //4 caracteres
    for (i=0;i < 26; i++)
    {
        for (j=0;j < 26; j++)
        {
            for (k=0;k < 26; k++)
            {
                for (l=0;l < 26; l++)
                {
                    buffer[0] = alfabeto[i];
                    buffer[1] = alfabeto[j];    
                    buffer[2] = alfabeto[k];
                    buffer[3] = alfabeto[l];    
                    buffer[4] = '\0';
                    testa(nomeArq, buffer);
                }
            }
        }
    }
}
